---
image: /generated/articles-docs-contributing-option.png
title: Implementing a new option
crumb: Contributing
---

Adding a new option to a feature is a great way to contribute to Remotion and enable more use cases.

## Ways of specifying an option

There are multiple ways to specify an option:

- APIs that can be called via Node.JS can directly accept a parameter.
- Options influencing a render can be added to the render dialog in the [Remotion Studio](/docs/terminology/studio).
- If the action is available as a [CLI](/docs/cli) command, the option should also be added as a CLI flag.
- The [config](/docs/config) file can be also be used to specify multiple options. <br/>
  :::note
  The config file should not be read when executing a CLI command, otherwise it's values should be ignored.
  :::

## Option Resolution

The option should be resolved in the following order:

<Step>1</Step> Directly passed to the Node.JS API
<br />
<Step>2</Step> Specified via the render UI in the <a href="/docs/terminology/studio">Remotion Studio</a>
<br />
<Step>3</Step> Specified via <a href="/docs/cli">CLI flag</a>
<br />
<Step>4</Step> Specified via <a href="/docs/config">config file</a>
<br />
<Step>5</Step> Fallback to a default value

## Naming

The option should be named in `camelCase` for options in Node.JS and in `hyphen-case` for options accepted by the CLI.

Options accepting numerical values should include the unit in the name. For example `durationInFrames` instead of `duration` or `timeoutInMilliseconds` instead of `timeout`.

## Documentation

The option should be documented in the [API reference](/docs/api) and the [CLI reference](/docs/cli).

Note from which version the option is available.

## Testing changes to the CLI

Check out the [Running the CLI](/docs/contributing) section in the contributing docs.

## See also

- [Implementing a new feature](/docs/contributing/feature)
- [Writing documentation](/docs/contributing/docs)
- [How to take a bounty issue](/docs/contributing/bounty)
